该SwiftUI教程使用@State
关键字来表示可变UI状态:
@State var showFavoritesOnly= false
它提供了以下摘要:
状态是一个值或一组值,可以随时间变化,并影响视图的行为,内容或布局。您可以将属性与@State属性一起使用,以将状态添加到视图中。
关键字的确切含义是什么?
变异@State
变量如何导致视图重新计算?
其他变量在body
吸气剂中如何不变?
fredpi.. 26
该@State
关键字是@propertyWrapper
,最近刚刚在雨燕5.1中引入的功能。正如在相应提案中所解释的那样,它有点像价值包装程序,它避免了样板代码。
旁注:@propertyWrapper
以前称为@propertyDelegate
,但此后发生了变化。有关更多信息,请参见此帖子。
该官员@state文档具有以下的说:
SwiftUI
管理您声明为状态的任何属性的存储。 当状态值更改时,视图将使其外观无效并重新计算body。将状态用作给定视图的唯一事实来源。State实例不是值本身;它不是值本身。这是读取和更改值的一种方法。要访问状态的基础值,请使用其value属性。
因此,当您初始化标记为的属性时@State
,您实际上并不是在创建自己的变量,而是提示在后台SwiftUI
创建“东西”来存储您设置的内容并从现在开始对其进行监视!您@State var
只是充当访问此包装器的委托。
每次您的@State
变量被写入时,SwiftUI
就会知道它正在监视它。它也将知道是否@State
变量被读出从View
的body
。使用此信息,它将能够重新计算View
@State
在body
对该变量进行更改之后在其变量中引用任何变量。
该@State
关键字是@propertyWrapper
,最近刚刚在雨燕5.1中引入的功能。正如在相应提案中所解释的那样,它有点像价值包装程序,它避免了样板代码。
旁注:@propertyWrapper
以前称为@propertyDelegate
,但此后发生了变化。有关更多信息,请参见此帖子。
该官员@state文档具有以下的说:
SwiftUI
管理您声明为状态的任何属性的存储。 当状态值更改时,视图将使其外观无效并重新计算body。将状态用作给定视图的唯一事实来源。State实例不是值本身;它不是值本身。这是读取和更改值的一种方法。要访问状态的基础值,请使用其value属性。
因此,当您初始化标记为的属性时@State
,您实际上并不是在创建自己的变量,而是提示在后台SwiftUI
创建“东西”来存储您设置的内容并从现在开始对其进行监视!您@State var
只是充当访问此包装器的委托。
每次您的@State
变量被写入时,SwiftUI
就会知道它正在监视它。它也将知道是否@State
变量被读出从View
的body
。使用此信息,它将能够重新计算View
@State
在body
对该变量进行更改之后在其变量中引用任何变量。